package com.luo.backend.repository;

import com.luo.backend.entity.EmailVerificationCode;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 邮箱验证码数据访问接口
 */
@Repository
public interface EmailVerificationCodeRepository extends JpaRepository<EmailVerificationCode, Long> {
    
    /**
     * 根据邮箱、验证码和类型查找
     */
    Optional<EmailVerificationCode> findByEmailAndCodeAndType(String email, String code, String type);
    
    /**
     * 根据邮箱和类型查找最新的验证码
     */
    Optional<EmailVerificationCode> findFirstByEmailAndTypeOrderByCreatedAtDesc(String email, String type);
    
    /**
     * 查找某个邮箱和类型的所有验证码
     */
    List<EmailVerificationCode> findByEmailAndType(String email, String type);
    
    /**
     * 删除创建时间早于指定时间的验证码（用于定时清理）
     */
    void deleteByCreatedAtBefore(LocalDateTime cutoffTime);
    
    /**
     * 统计某个邮箱在指定时间后创建的验证码数量
     */
    long countByEmailAndTypeAndCreatedAtAfter(String email, String type, LocalDateTime afterTime);
}



